package registration;

import java.awt.Color;

import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JTextField;

import org.apache.commons.lang.StringUtils;

public class DataVerifier extends InputVerifier {

	@Override
	public boolean verify(JComponent arg0) {
		JTextField ob = (JTextField) arg0;
		String name = ob.getName();
		if (name.equals("fNameField"))			
			return fNameVerify(ob);
		if (name.equals("lNameField"))
			return lNameVerify(ob);
		if (name.equals("secretCodeField"))
			return secretCodeVerify(ob);
		if (name.equals("cityField"))
			return cityVerify(ob);
		if (name.equals("streetField"))
			return streetVerify(ob);
		if (name.equals("peselField"))
			return peselVerify(ob);
		return false;
	}
	
	private boolean fNameVerify(JTextField ob){
		String text = ob.getText();
		if (text.length() < 3 || text.length() > 15){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		if (!StringUtils.isAlpha(text)){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		ob.setBackground(Color.WHITE);
		return true;
	}
	
	private boolean lNameVerify(JTextField ob){
		String text = ob.getText();
		if (text.length() < 3 || text.length() > 20){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		if (!StringUtils.isAlpha(text)){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		ob.setBackground(Color.WHITE);
		return true;
	}
	
	private boolean peselVerify(JTextField ob){
		String text = ob.getText();
		if (text.length() != 11){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		if (!StringUtils.isNumeric(text)){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		ob.setBackground(Color.WHITE);
		return true;
	}
	
	private boolean cityVerify(JTextField ob){
		String text = ob.getText();
		if (!StringUtils.isAlpha(text)){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		ob.setBackground(Color.WHITE);
		return true;
	}
	
	private boolean streetVerify(JTextField ob){
		String text = ob.getText();
		if (!StringUtils.isAlpha(text)){
			if (ob.hasFocus())
				ob.setBackground(Color.PINK);
			return false;
		}
		ob.setBackground(Color.WHITE);
		return true;
	}
	
	private boolean secretCodeVerify(JTextField text){
		return true;
	}

}
